#ifndef LR_TABLE_BUILDER_HPP
#define LR_TABLE_BUILDER_HPP

#include "LL1Parser.hpp"
#include "LRAnalyzer.hpp"
#include "LRTable.hpp"
#include <string>
#include <vector>

class LRTableBuilder {
public:
  std::unordered_map<std::string, std::unordered_set<std::string>>
  getFollowSet(std::vector<define> defineVec,
               const std::unordered_set<std::string> &terminals);
  LRTable buildTableFrom(
      const std::vector<ProjectSet> &pjSetVec,
      const std::vector<DefineExpr> &defineExpresses,
      std::unordered_map<std::string, std::unordered_set<std::string>>
          followSet);
};

#endif // !LR_TABLE_BUILDER_HPP
